pub trait Dot<T> {
    fn dot(&self, other: Self) -> T;
}
